home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / asmutil / masmv5p1.zip / MASMV5P1.TXT
Text File  |  1987-10-04  |  6KB  |  116 lines

  1. Two messages from DANNYSOFT BBS, captured on 10/4/87.
  2.  
  3. Message #1448
  4.   To ALL                                    09-17-87            
  5. From CARLOTTA DECONCILIS                    Subject PROBLEMS WITH MASM V5.0
  6. ---------------------------------------------------------------------------
  7.            ****   Courtesy of Glenn Dobratz   ****
  8. The following is a description of the problems which I have
  9. encountered in installing the V5.0 release of the MicroSoft
  10. Assembler and its support utilities.
  11. MASM
  12. - The assembler does not detect certain illegal 386 instruction
  13.   syntaxes and generates bad code for them.  Specifically, the
  14.   386 now permits the syntax [EBX*n] for indexing, where n is 2,
  15.   4, or 8.  This automatic scaling is supported only for the extended
  16.   32-bit registers.  The syntax [BX*n] is not legal, but MASM accepts
  17.   it and generates a junk instruction.
  18. - The assembler no longer accepts the ASCII Form-Feed character as an
  19.   equivalent to the PAGE directive.  If you have been using this to
  20.   separate the subroutines in your .ASM files, you find that they are
  21.   no longer on separate listing pages.  This is an undocumented
  22.   difference from V4.0.
  23. - PAGE directives are now listed on the first line of the new page
  24.   instead of the last line of the current page.
  25.   This change is undocumented.
  26. - If you use the .386 directive to access the 80386 instruction set be
  27.   forewarned that the default for the conditional-jump instructions
  28.   (Jxx) changes from SHORT to NEAR and all of your conditional jumps
  29.   which do not have explicit SHORT encodings now become longer and
  30.   slower. This change is documented.
  31. - If you use the .386 directive in some files and do not use it in
  32.   others, there is no practical way to have neat header files such as
  33.   DOS.MAC to define your segments.  This only affects .ASMs which you
  34.   are trying to make be compatible with Lattice C; MSC is OK.
  35.   The problem is that your 386 segments must include either USE16 or
  36.   USE32 unless you use MicroSoft's default segment names, which
  37.   Lattice does not.
  38.   But if you do not use .386 then you are not permitted to put USE16
  39.   or USE32 in your segment declarations.
  40.   This makes it impossible to have one file, such as DOS.MAC, which
  41.   will work properly regardless of whether or not .386 is present.
  42.   There is also no way of testing whether or not .386 has been
  43.   specified, so the .MAC file can't do its segment declarations
  44.   conditionally.  Sigh.
  45. LINK
  46. - If you mess up your segment definitions and wind up attempting to
  47.   combine two PUBLIC segments, one of which is USE16 and the other is
  48.   USE32, then the link will fail with an error L1123 which has no
  49.   associated text message to tell you what is wrong or where.
  50.   L1123 is not documented in the manual either.
  51. - The new format .EXE files which are generated by LINK are slightly
  52.   larger than they were for the same program using the previous LINK.
  53. MAKE
  54. - They have made an undocumented change which breaks old MAKE files
  55.   which use TOOLS.INI to define inferrence rules.  The V4.0 MAKE would
  56.   not parse the text read from TOOLS.INI for macro replacement until
  57.   it really needed to use the particular rule.  The new MAKE performs
  58.   macro replacement on the TOOLS.INI text when it reads the file in,
  59.   which is done before your MAKE file is read.
  60.   This means that your program cannot define/redefine macros which are
  61.   used in TOOLS.INI since the replacement is done before your macros
  62.   are scanned. This makes it impossible for a MAKE file to
  63.   'communicate' options, etc., via macros, to the inferrence rules in
  64.   TOOLS.INI.
  65. - The problem with the old MAKE that it does not conform to the
  66.   documentation on how TOOLS.INI is scanned has not been corrected.
  67.   Inferrence rules which are defined in TOOLS.INI are still mutually
  68.   exclusive with the inferrence rules which are defined in your MAKE
  69.   file. The documentation says that rules in your MAKE file have
  70.   priority over the rules defined in TOOLS.INI.
  71. If you encounter an problems which I have not enumerated above, I
  72. would very much like to here about them.  You may contact me by
  73. leaving a message for me on the Lattice BBS or at the phone number
  74. below between 12:00 and 18:00 CT.
  75. Glenn Dobratz
  76. (312) 882-7305
  77. LBBS(312) 916-1200(9600/2400/1200/300/8/N/1)
  78.  
  79. * * * * * * * * * * *
  80.  
  81. Message #1709
  82.   To CARLOTTA DECONCILIS                    09-28-87             (Rcvd)
  83. From FRANK HABER                            Subject (R)PROBLEMS WITH MASM V5.
  84. ---------------------------------------------------------------------------
  85. How 'bout 'dis?
  86.  
  87. Fm: SysOp Chris Dunford 76703,2002
  88. To: Don 73047,1113
  89.  
  90. The four bugs that I know about (courtesy of Bob Smith):
  91.  
  92. 1. A problem with ASSUME.  Sometimes MASM fails to detect that none of
  93. the
  94. segment registers are set to address an data object and invalid code is
  95. generated (a DS override where DS doesn't address the object).  No
  96. warning or
  97. error messages.
  98.  
  99. 2. Sometime it computes the length of an instruction differently on the
  100. two
  101. passes and does not warn.  Then it outputs two object records for the
  102. instruction.  LINK then adds nulls, rsulting in the execution of the
  103. instruction ADD [BX][SI],AL.  No error messages, and the LST file
  104. appears to
  105. be correct.
  106.  
  107. 3. Certain constructs cause no public records to be emitted for objects
  108. declared to be PUBLIC.  (Bob says he reported this bug to MS in 1985,
  109. with
  110. sample code.)
  111.  
  112. 4. Certain kinds of nested structures that should work, don't.
  113.  
  114. 3 and 4 I can live with, but 1 and 2 are very nasty.
  115.  
  116.